﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using System.Collections;
using GDCal.dao;
using GDCal.vo;

namespace GDCal
{
    public class GDBaseForm : Form
    {
        //Have two values: 1: Old, 2: New
        protected int loadMapWay = 1;
        private Cursor oldCursor;
        private static ArrayList cities = new ArrayList();
        private static ArrayList landScales = new ArrayList();
        private static Dictionary<String, String> landCodesAndDictionary = new Dictionary<String, String>();

        public ArrayList getLandScale() 
        {
            if (landScales == null || landScales.Count == 0)
            {
                landScales.Add(30);
                landScales.Add(50);
                landScales.Add(70);
            }
            return landScales;  
        }

        public static Dictionary<String, String> getLandCodesAndDescription()
        {
            if (landCodesAndDictionary == null || landCodesAndDictionary.Keys.Count == 0)
            {
                landCodesAndDictionary.Add("LUC", "Đất chuyên trồng lúa nước");
                landCodesAndDictionary.Add("LUK", "Đất trồng lúa nước còn lại");
                landCodesAndDictionary.Add("LUN", "Đất trồng lúa nương");
                landCodesAndDictionary.Add("COC", "Đất cỏ dùng vào chăn nuôi");
                landCodesAndDictionary.Add("BHK", "Đất bằng trồng cây hàng năm khác");
                landCodesAndDictionary.Add("NHK", "Đất nương rẫy trồng cây hàng năm khác");
                landCodesAndDictionary.Add("LNC", "Đất trồng cây công nghiệp lâu năm");
                landCodesAndDictionary.Add("LNQ", "Đất trồng cây ăn quả lâu năm");
                landCodesAndDictionary.Add("LNK", "Đất trồng cây lâu năm khác");
                landCodesAndDictionary.Add("RSN", "Đất có rừng tự nhiên sản xuất");
                landCodesAndDictionary.Add("RST", "Đất có rừng trồng sản xuất");
                landCodesAndDictionary.Add("RSK", "Đất khoanh nuôi phục hồi rừng sản xuất");
                landCodesAndDictionary.Add("RSM", "Đất trồng rừng sản xuất");
                landCodesAndDictionary.Add("RPN", "Đất có rừng tự nhiên phòng hộ");
                landCodesAndDictionary.Add("RPT", "Đất có rừng trồng phòng hộ");
                landCodesAndDictionary.Add("RPK", "Đất khoanh nuôi phục hồi rừng phòng hộ");
                landCodesAndDictionary.Add("RPM", "Đất trồng rừng phòng hộ");
                landCodesAndDictionary.Add("RDN", "Đất có rừng tự nhiên đặc dụng");
                landCodesAndDictionary.Add("RDT", "Đất có rừng trồng đặc dụng");
                landCodesAndDictionary.Add("RDK", "Đất khoanh nuôi phục hồi rừng đặc dụng");
                landCodesAndDictionary.Add("RDM", "Đất trồng rừng đặc dụng");
                landCodesAndDictionary.Add("TSL", "Đất nuôi trồng thủy sản nước lợ, mặn");
                landCodesAndDictionary.Add("TSN", "Đất nuôi trồng thủy sản nước ngọt");
                landCodesAndDictionary.Add("LMU", "Đất làm muối");
                landCodesAndDictionary.Add("NKH", "Đất nông nghiệp khác");
                landCodesAndDictionary.Add("ONT", "Đất ở tại nông thôn");
                landCodesAndDictionary.Add("ODT", "Đất ở tại đô thị");
                landCodesAndDictionary.Add("TSC", "Đất trụ sở cơ quan, công trình sự nghiệp nhà nước");
                landCodesAndDictionary.Add("TSK", "Đất trụ sở khác");
                landCodesAndDictionary.Add("CQP", "Đất quốc phòng");
                landCodesAndDictionary.Add("CAN", "Đất an ninh");
                landCodesAndDictionary.Add("SKK", "Đất khu công nghiệp");
                landCodesAndDictionary.Add("SKC", "Đất cơ sở sản xuất, kinh doanh");
                landCodesAndDictionary.Add("SKS", "Đất cho hoạt động khoáng sản");
                landCodesAndDictionary.Add("SKX", "Đất sản xuất vật liệu xây dựng, gốm sứ");
                landCodesAndDictionary.Add("DGT", "Đất giao thông");
                landCodesAndDictionary.Add("DTL", "Đất thủy lợi");
                landCodesAndDictionary.Add("DNL", "Đất công trình năng lượng");
                landCodesAndDictionary.Add("DBV", "Đất công trình bưu chính viễn thông");
                landCodesAndDictionary.Add("DVH", "Đất cơ sở văn hóa");
                landCodesAndDictionary.Add("DYT", "Đất cơ sở y tế");
                landCodesAndDictionary.Add("DGD", "Đất cơ sở giáo dục - đào tạo");
                landCodesAndDictionary.Add("DTT", "Đất cơ sở thể dục - thể thao");
                landCodesAndDictionary.Add("DKH", "Đất cơ sở nghiên cứu khoa học");
                landCodesAndDictionary.Add("DXH", "Đất cơ sở dịch vụ về xã hội");
                landCodesAndDictionary.Add("DCH", "Đất chợ");
                landCodesAndDictionary.Add("DDT", "Đất có di tích, danh thắng");
                landCodesAndDictionary.Add("DRA", "Đất bãi thải, xử lý chất thải");
                landCodesAndDictionary.Add("TON", "Đất tôn giáo");
                landCodesAndDictionary.Add("TIN", "Đất tín ngưỡng");
                landCodesAndDictionary.Add("NTD", "Đất nghĩa trang, nghĩa địa");
                landCodesAndDictionary.Add("SON", "Đất sông ngòi, kênh, rạch, suối");
                landCodesAndDictionary.Add("MNC", "Đất có mặt nước chuyên dùng");
                landCodesAndDictionary.Add("PNK", "Đất phi nông nghiệp khác");
                landCodesAndDictionary.Add("BCS", "Đất bằng chưa sử dụng");
                landCodesAndDictionary.Add("DCS", "Đất đồi núi chưa sử dụng");
                landCodesAndDictionary.Add("NCS", "Núi đá không có rừng cây");
                landCodesAndDictionary.Add("MVT", "Đất mặt nước ven biển nuôi trồng thủy sản");
                landCodesAndDictionary.Add("MVR", "Đất mặt nước ven biển có rừng");
                landCodesAndDictionary.Add("MVK", "Đất mặt nước ven biển có mục đích khác");
            }
            return landCodesAndDictionary;
        }

        public void showMaximize(Boolean isMaximize)
        {
            if (isMaximize)
            {
                this.WindowState = FormWindowState.Maximized;
            }
        }

        public void setWaitingMode(String statusMessage, StatusStrip statusStrip, ToolStripStatusLabel mainStatusLabel)
        {
            oldCursor = this.Cursor;
            this.Cursor = Cursors.WaitCursor;
            if (statusStrip != null && mainStatusLabel != null)
            {
                mainStatusLabel.Text = statusMessage;
                statusStrip.Refresh();
            }
        }

        public void clearWaitingMode(StatusStrip statusStrip, ToolStripStatusLabel mainStatusLabel) 
        {
            if (oldCursor != null)
            {
                this.Cursor = oldCursor;
            }
            if (statusStrip != null && mainStatusLabel != null)
            {
                mainStatusLabel.Text = "";
                statusStrip.Refresh();
            }
        }

        public ArrayList getCities() 
        {
            if (cities == null || cities.Count == 0)
            {
                cities.Add("Tp. Hà Nội");
                cities.Add("Tp. Đà Nẵng");
                cities.Add("Tp. Hồ Chí Minh");
            }
            return cities;
        }

        public ArrayList getCities(Int32 year)
        {
            return LandPriceDao.filter(year);
        }
    }
}
